import tool.TreeNode;
import tool.TreeNodePrint;
import tool.input;

/**
 * @Description: 二叉树的最小深度
 * 给定一个二叉树，找出其最小深度。
 * 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
 * 说明：叶子节点是指没有子节点的节点。
 *
 * @Date:Create in 11:30  2022/7/20
 */
public class minDepth0111 {

    public static void main(String[] args) {
        String s = "[3,9,20,null,null,15,7]";
        TreeNode root = input.getTree(s);
        TreeNodePrint.printTree(root);
        System.out.println(minDepth1(root));
    }

    //深度优先搜索
    public static int minDepth1(TreeNode root) {
        if(root==null){
            return 0;
        }
        if (root.left == null && root.right == null) {
            return 1;
        }
        int min_depth = Integer.MAX_VALUE;
        if (root.left != null) {
            min_depth = Math.min(minDepth1(root.left), min_depth);
        }
        if (root.right != null) {
            min_depth = Math.min(minDepth1(root.right), min_depth);
        }

        return min_depth + 1;


    }
}
